A multiprocessing system processes a plurality of processes in parallel by using a plurality of central processing unit (CPU) cores. However, multiprocessing causes problems of uniform loading balancing between the CPU cores, a collision between resources shared by the CPU cores, a cache efficiency deterioration, etc.
In particular, in order to improve packet processing efficiency, the multiprocessing system that processes a packet in parallel may enable the same CPU to process packets belonging to the same flow and may keep a flow affinity with a CPU. In this case, a particular CPU may be overloaded, and thus load balancing between all CPUs may be imbalanced. Therefore, whole processing efficiency of the multiprocessing system may be lowered.
In order to solve this, load balancing may be periodically performed between CPUs. In this case, a CPU that processes a flow is changed in a load balancing process and thus makes a flow affinity is lowered, and a packet processing order is changed to make a packet re-ordering process required. Therefore, packet processing efficiency of the multiprocessing system is lowered.
As described above, a flow affinity and appropriate load balancing are required to improve processing efficiency of the multiprocessing system. However, the two are conflict with each other, and thus this may be appropriately complemented.
Also, internet traffic has been recently increased, and thus a server has had a large capacity and a high speed. A virtualization of the server has accelerated to a solution to a physical volume increase, cost, etc. caused by the large capacity of the server. Due to the large capacity, the high-speed, and the virtualization of the server, high efficiency of parallel processing for massive data including a data packet, which is generated a virtualization environment received from a physical network, is required. Also, when a virtual switch function is performed in a virtualization server, a performance of the server is deteriorated due to a load increase in the server. As a result, there is required a realization of a technology that changes a load of the server depending on the virtual switch function into a physical network interface unit.
A conventional network interface card (NIC) that supports a virtualization environment has tried to generate and manage a queue in the unit of virtual machine, as a method of supporting a virtualization environment in a physical network interface device, so as to reduce a bottleneck phenomenon between a network interface device and a virtual switch of a server. However, the try is made only in the unit of virtual machine when performing processor allocation and redistribution of queues for parallel processing for a received data packet. In other words, processor allocation considering only physical layers of a virtualization environment is performed. Therefore, a processor affinity that is one of elements very important to improve processing efficiency in parallel processing may not be considered, and processor allocation and redistribution of queues occur in consideration of only use load of a processor. This may operate as a factor of reducing efficiency of parallel processing.